import numpy as np
import functions
import gradiant
from functions import softmax,cross_entropy_error

#一个简单的神经网络
class simpleNet:
    def __init__(self):#用高斯分布新建一个（2，3）的权重数组
        self.W=np.random.randn(2,3)
    def predict(self,x):#求出预测结果y
        return softmax(np.dot(x,self.W))
    def loss(self, x, t):
        y=self.predict(x)#预测结果y
        loss=cross_entropy_error(y,t)#用y和t求交叉熵误差
        return loss
x=np.array([0.6,0.9])#x（1,2），w（2,3）
net=simpleNet()
y=net.predict(x)#预测之后的结果，应该是（1，3）的数组
t=np.array([0,0,1])#代表第三个位置是正确的
'''
def f(a):
    return net.loss(x, t)
'''
f = lambda a: net.loss(x, t)#匿名函数 f，它接受一个参数 w 并返回 net.loss(x, t) 的计算结果。
dW = gradiant.numerical_gradient_2d(f, net.W)#计算梯度
print(dW)




